//
// Created by Administrator on 2021/9/29.
//
#include "FileUtil.h"

/**
 * 从文件中字符串
 * @param filePath 文件路径
 * @return c字符串
 */
std::string FileUtil::readStrFromFile(std::string filePath) {
    //读取文件
    std::fstream ffstream;
    std::stringstream  fStringSteam;

    ffstream.open(filePath.c_str(), std::ios::in);

    m_check(ffstream, StringUtil::format("File not find. %s", filePath.c_str()).c_str());

    fStringSteam << ffstream.rdbuf();

    ffstream.close();

    return fStringSteam.str();
}

/**
 * 读取文件中的每一行并返回
 * @param filePath 文件路径
 * @return 每行数据
 */
std::vector<std::string> FileUtil::readLineStrFromFile(std::string filePath) {
    std::vector<std::string> fileContent;
    std::ifstream in(filePath.c_str());
    m_check(in, StringUtil::format("File not find. %s", filePath.c_str()).c_str());

    std::string line;
    while (getline (in, line)) // line中不包括每行的换行符
    {
        fileContent.emplace_back(line);
    }
    log_info("Read file success, count %d rows", fileContent.size());

    return fileContent;
}

/**
 * 字符串写入文件
 * @param filePath 文件路径
 * @param content 内容
 * @return 是否写入成功
 */
bool FileUtil::writeStrToFile(std::string filePath, std::string content) {
    //输入到文件
    std::ofstream out(filePath.c_str());

    bool bCanOpen = !out;
    m_check(out, "File can not open");

    //std::ofstream out_with_append("out.txt", std::ios_base::app); 追加模式
    out<< content.c_str() << std::endl;
    out.close();

    return true;
}






